深入理解C语言的文件【系统编程】 |
您所在的位置:网站首页 › c语言gets 怎么用 › 深入理解C语言的文件【系统编程】 |
几个概念: 1.fopen、fclose、fread等都是库函数,而库函数需要被调用系统调用接口调用(下文会介绍的open,close,read等),所以我们可以认为f#系列的函数都是对系统调用的封装,方便二次开发 2.文件存放在磁盘里,磁盘是硬件,想访问硬件只能通过操作系统,所以所有人想访问磁盘,只能使用OS提供的接口,类似于python,c++都有不同的文件操作接口,但是其本质都是封装了调用系统调用 3.文件的操作可以看成是进程和被打开文件的关系(下面会介绍) 我们先复习一下常用的几个文件打开方式 “r” 只读打开一个文本文件,只允许读数据 “w” 只写打开或建立一个文本文件,只允许写数据 “a” 追加打开一个文本文件,并在文件末尾写数据 “rb” 只读打开一个二进制文件,只允许读数据 “wb” 只写打开或建立一个二进制文件,只允许写数据 “ab” 追加打开一个二进制文件,并在文件末尾写数据 “r+” 读写打开一个文本文件,允许读和写 “w+” 读写打开或建立一个文本文件,允许读写 “a+” 读写打开一个文本文件,允许读,或在文件末追加数据 “rb+” 读写打开一个二进制文件,允许读和写 “wb+” 读写打开或建立一个二进制文件,允许读和写 “ab+” 读写打开一个二进制文件,允许读,或在文件末追加数 接口介绍 一、openman 2 open查看 #include #include #include int open(const char *pathname, int flags); int open(const char *pathname, int flags, mode_t mode); pathname: 要打开或创建的目标文件 flags: 打开文件时,可以传入多个参数选项,用下面的一个或者多个常量进行“或”运算,构成flags。 参数: O_RDONLY: 只读打开 O_WRONLY: 只写打开 O_RDWR : 读,写打开 这三个常量,必须指定一个且只能指定一个 O_CREAT : 若文件不存在,则创建它。需要使用mode选项,来指明新文件的访问权限 O_APPEND: 追加写返回值: 成功:新打开的文件描述符 失败:-1 这个flag就是位图,所以在我们使用的时候只需要|上各种条件我们就可以实现各种效果 fclose对应close->man 3 close查看 #include #include #include #include #include #include #define FILE_NAME "log.txt" int main() { //这个才对应于C语言的写 int fd=open(FILE_NAME,O_WRONLY|O_CREAT); //失败就返回-1 if(fd显示器 stderr->显示器 所以我们可以得知C语言的FILE虽然是个结构体,但是里面必定有个字段有文件描述符 printf("stdin->fd:%d\n",stdin->_fileno); printf("stdout->fd:%d\n",stdout->_fileno); printf("stderr->fd:%d\n",stderr->_fileno);所以证明C语言的FILE*也封装了文件描述符 回到一开始的概念:.文件的操作可以看成是进程和被打开文件的关系,这张图清楚的展示了这样的关系 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |